package com.shop.cereshop.commons.tencent.im.model.callback.request;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.shop.cereshop.commons.tencent.im.model.msg.element.TIMMsgElement;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

/**
 * @description: 群内发言之前回调 请求体
 * CallbackCommand: Group.CallbackBeforeSendMsg
 * @see <a href="https://cloud.tencent.com/document/product/269/1619">群内发言之前回调</a>
 *
 * @author zdd
 * @date 2025/9/11 10:01
 * @version 1.0
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class BeforeSendGroupMsgCallbackRequest extends CallbackRequest implements Serializable {
    private static final long serialVersionUID = 5026871190594429962L;
    /**
     * 回调命令
     */
    @JsonProperty("CallbackCommand")
    private String callbackCommand;

    /**
     * 产生群消息的群组 ID
     */
    @JsonProperty("GroupId")
    private String groupId;

    /**
     * 产生群消息的群组类型，例如 Public
     */
    @JsonProperty("Type")
    private String type;

    /**
     * 消息发送者 UserID
     */
    @JsonProperty("From_Account")
    private String fromAccount;

    /**
     * 请求发起者 UserID，可以用来识别是否为管理员请求的
     */
    @JsonProperty("Operator_Account")
    private String operatorAccount;

    /**
     * 发消息请求中的 32 位随机数
     */
    @JsonProperty("Random")
    private Long random;

    /**
     * 在线消息，为1，否则为0；直播群忽略此属性，为默认值0
     */
    @JsonProperty("OnlineOnlyFlag")
    private Integer onlineOnlyFlag;

    /**
     * 消息体
     */
    @JsonProperty("MsgBody")
    private List<TIMMsgElement> msgBody;

    /**
     * 消息自定义数据（云端保存，会发送到对端，程序卸载重装后还能拉取到）
     */
    @JsonProperty("CloudCustomData")
    private String cloudCustomData;

    /**
     * 话题的 ID，若具有此选项表示在话题内发言，仅支持话题的社群适用此选项
     */
    @JsonProperty("TopicId")
    private String topicId;

    /**
     * 事件触发的毫秒级别时间戳
     */
    @JsonProperty("EventTime")
    private Long eventTime;

}
